Welcome to pandas!

8.17 读取单工作簿下的多工作表

Excel工作簿文件,是比较主流的一种数据存储方式,要读到excel工作簿下的所有工作表数据, 可以使用excel自带的VBA功能完成,但代码较为复杂,不过使用pandas来读取就方便很多了。


import pandas as pd

wb=pd.ExcelFile(r "D:\Pyobject2023\object\测试\素材\1.8.07 表格纵向拼接(初级).xlsx" )

l=[]

for ws in wb.sheet_names:

df1=wb.parse(ws) #写入工作表名

print (df1)

df1[ "部门" ]=ws #给每个df添加部门的字段

l.append(df1) #append增加的是一个数组

print (l,"_____" )

df=pd.concat(objs=l) #数据转换成DataFrame

print (df)

返回:

姓名 工资
0 张三 111
1 李四 222
2 王麻子 333

[ 姓名 工资 部门
0 张三 111 采购部
1 李四 222 采购部
2 王麻子 333 采购部] _____

姓名 工资
0 小韦 888
1 小李 777
2 小余 666

[ 姓名 工资 部门
0 张三 111 采购部
1 李四 222 采购部
2 王麻子 333 采购部,

姓名 工资 部门
0 小韦 888 财务部
1 小李 777 财务部
2 小余 666 财务部] _____

姓名 工资
0 小许 333
1 小郭 444
2 小张 555

[ 姓名 工资 部门
0 张三 111 采购部
1 李四 222 采购部
2 王麻子 333 采购部,

姓名 工资 部门
0 小韦 888 财务部
1 小李 777 财务部
2 小余 666 财务部,

姓名 工资 部门
0 小许 333 生产部
1 小郭 444 生产部
2 小张 555 生产部] _____

姓名 工资 部门
0 张三 111 采购部
1 李四 222 采购部
2 王麻子 333 采购部
0 小韦 888 财务部
1 小李 777 财务部
2 小余 666 财务部
0 小许 333 生产部
1 小郭 444 生产部
2 小张 555 生产部

import pandas as pd

wb=pd.ExcelFile(r "D:\Pyobject2023\object\测试\素材\1.8.07 表格纵向拼接(初级).xlsx" )

l=[]

for ws in wb.sheet_names:

df1=wb.parse(ws) #写入工作表名

df1[ "部门" ]=ws #给每个df添加部门的字段

l.append(df1) #append增加的是一个数组

df=pd.concat(objs=l).groupby( "部门").agg({ "姓名" : lambda s:s.str.cat(sep= "、" )}).reset_index()

print (df)

返回:

部门 姓名
0 生产部 小许、小郭、小张
1 财务部 小韦、小李、小余
2 采购部 张三、李四、王麻子